﻿package utils 
{
	import flash.events.Event;
	import flash.utils.setTimeout;
	
	/**
	 * ...
	 * @author Slaushchyk Aliaksandr
	 */
	internal class VkLoader 
	{
		private static const maxQueryesPerSeccond:int = 3;
		private var q:int = 0;
		private var queryes:Array = [];
		
		/**
		 * Метод, ставящий запросы в очередь.
		 * @param	obj - Запрос. URLLoader или чтолибо, с таким же интерфейсом
		 * @param	src - URL. String или URLRequest
		 * @return 	Индекс запроса, поставленного в очередь.
		 */
		public function loadStackQuery(obj:Object, src:Object):int {
			queryes[q] = obj;
			q++;
			setTimeout(loadQuery, Math.ceil(1200 / maxQueryesPerSeccond * q));
			return q - 1;
			function loadQuery():void {
				obj.load(src);
				obj.addEventListener(Event.COMPLETE, onQueryLoaded);
			}
		}
		public function getQuery(idx:int):Object {
			return queryes[idx];
		}
		public function stopQuery(idx:int):Boolean {
			queryes[idx].removeEventListener(Event.COMPLETE, onQueryLoaded);
			try {
				queryes[idx].close();
				return true;
			}catch (e:Error) {
				return false;
			}
			return false;
		}
		public function stopAll():void {
			for (var i:int = 0; i < queryes.length; i++) stopQuery(i);
		}
		private function onQueryLoaded(e:Event):void {
			q--;
			//trace(e.currentTarget.data)
			queryes.splice(q, 1);
			e.currentTarget.removeEventListener(Event.COMPLETE, onQueryLoaded);
		}
		
	}
	
}